import Vue from 'vue'
import Notice from '@/components/Notice.vue'
// 接受组件的配置 和 参数
function create(Component, props) {
  // 组件构造函数如何获取？
  // 1.Vue.extend()
  // 2.render
  // 借助Vue创建实例
  const createCompon = Vue.extend(Component)
  const compon = new createCompon({ propsData: props })
  compon.$mount()
  document.body.appendChild(compon.$el)
  // 手动挂载到dom上
  document.body.appendChild(vm.$el)
  // 需要返回组件实例
  // 在vm的所有的孩子组件里面找到最新的也是惟一的添加的哪一个也就是$children[0]
  const compon = vm.$children[0]

  // 删除
  // 卸载机制
  compon.remove = function() {
    // 释放内存和引用关系
    document.body.removeChild(vm.$el)
    // 删除实例
    vm.$destroy()
  }

  return compon
}

// export default create
// 导出一个插件
// 函数科里化 本来要穿两个参数现在只需要传递一个
export default {
  install(Vue) {
    Vue.prototype.$notice = function(options) {
      return create(Notice, options)
    }
    // $alert
  }
}
